
var camelCaseTokenizer = function (builder) {

  var pipelineFunction = function (token) {
    var previous = '';
    // split camelCaseString to on each word and combined words
    // e.g. camelCaseTokenizer -> ['camel', 'case', 'camelcase', 'tokenizer', 'camelcasetokenizer']
    var tokenStrings = token.toString().trim().split(/[\s\-]+|(?=[A-Z])/).reduce(function(acc, cur) {
      var current = cur.toLowerCase();
      if (acc.length === 0) {
        previous = current;
        return acc.concat(current);
      }
      previous = previous.concat(current);
      return acc.concat([current, previous]);
    }, []);

    // return token for each string
    // will copy any metadata on input token
    return tokenStrings.map(function(tokenString) {
      return token.clone(function(str) {
        return tokenString;
      })
    });
  }

  lunr.Pipeline.registerFunction(pipelineFunction, 'camelCaseTokenizer')

  builder.pipeline.before(lunr.stemmer, pipelineFunction)
}
var searchModule = function() {
    var documents = [];
    var idMap = [];
    function a(a,b) { 
        documents.push(a);
        idMap.push(b); 
    }

    a(
        {
            id:0,
            title:"IUsersService",
            content:"IUsersService",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.Services.Interfaces/IUsersService',
            title:"IUsersService",
            description:""
        }
    );
    a(
        {
            id:1,
            title:"IAuthService",
            content:"IAuthService",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.Services.Interfaces/IAuthService',
            title:"IAuthService",
            description:""
        }
    );
    a(
        {
            id:2,
            title:"IAutoUpdatesHandler",
            content:"IAutoUpdatesHandler",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto/IAutoUpdatesHandler',
            title:"IAutoUpdatesHandler",
            description:""
        }
    );
    a(
        {
            id:3,
            title:"ILogoutService",
            content:"ILogoutService",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto/ILogoutService',
            title:"ILogoutService",
            description:""
        }
    );
    a(
        {
            id:4,
            title:"IClientSettings",
            content:"IClientSettings",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto/IClientSettings',
            title:"IClientSettings",
            description:""
        }
    );
    a(
        {
            id:5,
            title:"IClientApi",
            content:"IClientApi",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi/IClientApi',
            title:"IClientApi",
            description:""
        }
    );
    a(
        {
            id:6,
            title:"ManualUpdateHandler",
            content:"ManualUpdateHandler",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.Services.Interfaces/ManualUpdateHandler',
            title:"ManualUpdateHandler",
            description:""
        }
    );
    a(
        {
            id:7,
            title:"UserNotAuthorizeException",
            content:"UserNotAuthorizeException",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto.Exceptions/UserNotAuthorizeException',
            title:"UserNotAuthorizeException",
            description:""
        }
    );
    a(
        {
            id:8,
            title:"INettyBootstrapper",
            content:"INettyBootstrapper",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto/INettyBootstrapper',
            title:"INettyBootstrapper",
            description:""
        }
    );
    a(
        {
            id:9,
            title:"ApplicationProperties",
            content:"ApplicationProperties",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi/ApplicationProperties',
            title:"ApplicationProperties",
            description:""
        }
    );
    a(
        {
            id:10,
            title:"UserLogoutException",
            content:"UserLogoutException",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto.Exceptions/UserLogoutException',
            title:"UserLogoutException",
            description:""
        }
    );
    a(
        {
            id:11,
            title:"IFileService",
            content:"IFileService",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.Services.Interfaces/IFileService',
            title:"IFileService",
            description:""
        }
    );
    a(
        {
            id:12,
            title:"PhoneNumberUnoccupiedException",
            content:"PhoneNumberUnoccupiedException",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto.Exceptions/PhoneNumberUnoccupiedException',
            title:"PhoneNumberUnoccupiedException",
            description:""
        }
    );
    a(
        {
            id:13,
            title:"ISessionWriter",
            content:"ISessionWriter",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto/ISessionWriter',
            title:"ISessionWriter",
            description:""
        }
    );
    a(
        {
            id:14,
            title:"FileMigrationException",
            content:"FileMigrationException",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto.Exceptions/FileMigrationException',
            title:"FileMigrationException",
            description:""
        }
    );
    a(
        {
            id:15,
            title:"ClientFactory",
            content:"ClientFactory",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi/ClientFactory',
            title:"ClientFactory",
            description:""
        }
    );
    a(
        {
            id:16,
            title:"ISocks Proxy",
            content:"ISocks Proxy",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto/ISocks5Proxy',
            title:"ISocks5Proxy",
            description:""
        }
    );
    a(
        {
            id:17,
            title:"UnhandledException",
            content:"UnhandledException",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto.Exceptions/UnhandledException',
            title:"UnhandledException",
            description:""
        }
    );
    a(
        {
            id:18,
            title:"FactorySettings",
            content:"FactorySettings",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi/FactorySettings',
            title:"FactorySettings",
            description:""
        }
    );
    a(
        {
            id:19,
            title:"Socks ProxyConfig",
            content:"Socks ProxyConfig",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi/Socks5ProxyConfig',
            title:"Socks5ProxyConfig",
            description:""
        }
    );
    a(
        {
            id:20,
            title:"ICustomRequestsService",
            content:"ICustomRequestsService",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.Services.Interfaces/ICustomRequestsService',
            title:"ICustomRequestsService",
            description:""
        }
    );
    a(
        {
            id:21,
            title:"CloudPasswordNeededException",
            content:"CloudPasswordNeededException",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto.Exceptions/CloudPasswordNeededException',
            title:"CloudPasswordNeededException",
            description:""
        }
    );
    a(
        {
            id:22,
            title:"IUpdatesService",
            content:"IUpdatesService",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.Services.Interfaces/IUpdatesService',
            title:"IUpdatesService",
            description:""
        }
    );
    a(
        {
            id:23,
            title:"IApplicationProperties",
            content:"IApplicationProperties",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto/IApplicationProperties',
            title:"IApplicationProperties",
            description:""
        }
    );
    a(
        {
            id:24,
            title:"IContactsService",
            content:"IContactsService",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.Services.Interfaces/IContactsService',
            title:"IContactsService",
            description:""
        }
    );
    a(
        {
            id:25,
            title:"PhoneNumberInvalidException",
            content:"PhoneNumberInvalidException",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto.Exceptions/PhoneNumberInvalidException',
            title:"PhoneNumberInvalidException",
            description:""
        }
    );
    a(
        {
            id:26,
            title:"PhoneCodeInvalidException",
            content:"PhoneCodeInvalidException",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto.Exceptions/PhoneCodeInvalidException',
            title:"PhoneCodeInvalidException",
            description:""
        }
    );
    a(
        {
            id:27,
            title:"IClientSession",
            content:"IClientSession",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto/IClientSession',
            title:"IClientSession",
            description:""
        }
    );
    a(
        {
            id:28,
            title:"IFactorySettings",
            content:"IFactorySettings",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi/IFactorySettings',
            title:"IFactorySettings",
            description:""
        }
    );
    a(
        {
            id:29,
            title:"ISessionStore",
            content:"ISessionStore",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi/ISessionStore',
            title:"ISessionStore",
            description:""
        }
    );
    a(
        {
            id:30,
            title:"IHelpService",
            content:"IHelpService",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.Services.Interfaces/IHelpService',
            title:"IHelpService",
            description:""
        }
    );
    a(
        {
            id:31,
            title:"IRequestSender",
            content:"IRequestSender",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto/IRequestSender',
            title:"IRequestSender",
            description:""
        }
    );
    a(
        {
            id:32,
            title:"AutoUpdateHandler",
            content:"AutoUpdateHandler",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.Services.Interfaces/AutoUpdateHandler',
            title:"AutoUpdateHandler",
            description:""
        }
    );
    a(
        {
            id:33,
            title:"IMessagesService",
            content:"IMessagesService",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.Services.Interfaces/IMessagesService',
            title:"IMessagesService",
            description:""
        }
    );
    a(
        {
            id:34,
            title:"FloodWaitException",
            content:"FloodWaitException",
            description:'',
            tags:''
        },
        {
            url:'/OpenTl.ClientApi/api/OpenTl.ClientApi.MtProto.Exceptions/FloodWaitException',
            title:"FloodWaitException",
            description:""
        }
    );
    var idx = lunr(function() {
        this.field('title');
        this.field('content');
        this.field('description');
        this.field('tags');
        this.ref('id');
        this.use(camelCaseTokenizer);

        this.pipeline.remove(lunr.stopWordFilter);
        this.pipeline.remove(lunr.stemmer);
        documents.forEach(function (doc) { this.add(doc) }, this)
    });

    return {
        search: function(q) {
            return idx.search(q).map(function(i) {
                return idMap[i.ref];
            });
        }
    };
}();
